// File:       hset.c++
// Version:    1.00
// Author:     (c) Alexander Thoukydides, 1998
// Purpose:    Instantiate templates for the set class.
//             After including this file use
//
//               INSTANTIATE_SET(T0,T1)
//
//             to instantiate the templates for the specified
//             parameterisation or
//
//               INSTANTIATE_DESTROY_SET(T0,T1)
//
//             to also define destroy() functions.

// Include CathLibCPP header files
#include "tpltutil.h"

// Include CathLibCPP source code files
#ifndef cathlibcpp_hoistbp_CPP
#define cathlibcpp_hoistbp_CPP
#include "hoistbp.c++"
#endif
#ifndef cathlibcpp_hoistctdt_CPP
#define cathlibcpp_hoistctdt_CPP
#include "hoistctdt.c++"
#endif
#ifndef cathlibcpp_set_CPP
#define cathlibcpp_set_CPP
#include "set.c++"
#endif

// Define macros to instantiate the templates
#define INSTANTIATE_SET(T0,T1) \
    INSTANTIATE_CLASS_2(set, T0, T1)
#define INSTANTIATE_DESTROY_SET(T0,T1) \
    inline void destroy( T0 *p) \
    { p->~T0(); } \
    inline void destroy( T1 *p) \
    { p->~T1(); } \
    INSTANTIATE_CLASS_2(set, T0, T1)
